/**
 *  async 和 await
 *   async 函数执行完毕后, 返回的是一个 promise
 *
 *   async 函数其实也就是 generator 函数的实现, 编译完成后, 最终跟 generator 编译的结果一样.
 *   async + await 最终编译的就是 generator + co
 */
let fs = require("fs").promises

/**
 *  通过下面这个函数的打印我们知道,
 *    1. async 函数, 本身还是一步执行的函数.
 *    2. 但是 await 后面的异步函数会执行完, 才会执行 await 后面的代码(同是async函数内后面的代码)
 *
 *  async 函数之后的逻辑 ------
 *  await 执行的代码 --->>> b.txt
 *   await 后面的代码
 */
// async function readd() {
//   let a = await fs.readFile("a.txt", "utf8").then((data) => {
//     console.log("await 等待的逻辑 --->>>", data);
//   })
//   console.log(" await 执行完毕之后,后面的代码");
//
// }
// readd()
// console.log(" ----------- async 函数之后的逻辑 -------- \n ");



//
async function read() {
  try {
    const a = await fs.readFile("a.txt", "utf8")
    console.log(a);
    // 注意: 读取出来 a 文件中的 b.txt 可能带有空格或者回车字符, 会导致 b 文件读不出来报错, 所以可以手动去掉首尾空格.
    const b = await fs.readFile(a.trim(), "utf8")
    console.log(b);
    // const innerb = await fs.readFile(a, "utf8") // 可能会报错
    // console.log(innerb);
  } catch (err) {
    console.log(err);
  }
  console.log("try catch 之后的代码 ===============");
}

read().then((data) => {
  console.log(data);
})





